home *** CD-ROM | disk | FTP | other *** search
- // This file is used for the manual construction of DVD FilterGraphs.
- // This is a somewhat complex issue, you have been warned.
- //
- // The Functions:
- //
- // DefineFilter(FileName)
- // - Using this function you can define which filters are used by the Graph and
- // can later be registered/unregistered through the user interface.
- // DO NOT specify paths, Zoom Player does a system-wide scan for these files.
- //
- // LoadFilter(FilterID,FilterName)
- // - You can get the FilterID string by loading the filter in graph edit
- // and saving the result to an XML file (File -> Save as XML). Make sure
- // you copy it complete, along with the {} chars.
- // The FilterName is a name you assign to the filter. I recommend using
- // the name as it's listed by GraphEdit.
- //
- // ConnectPin(SourceFilterName,SourcePinName,DestinationFilterName,DestinationPinName)
- // - The Source and Destination filter names are the names you used with the LoadFilter
- // function. The Pin names can be found by viewing an XML exported filter graph
- // using GraphEdit (note: the pin names as they appear within GraphEdit itself
- // are incorrect!).
- //
- // IndirectConnectPin(SourceFilterName,SourcePinName,DestinationFilterName,DestinationPinName)
- // - This function is similar to the ConnectPin function except that it allows you to
- // connect pins with missing filters in between them. For example, you don't really know
- // which Audio/Video Codec an AVI file uses, so ... By Indirectly connecting the AVI Splitter
- // "Video->Out" pin with the Video Renderer filter "Video->In", the video codec is derived
- // automatically.
- //
- // SetFilterSync(FilterName)
- // - Using this function, you can set a specific filter as the filter that control the
- // Audio/Video Synchronization. Not all filters can be set as the Sync filters. Usually
- // the Audio filters are the ones in control of synchronization.
- // Use this function as the last function in the graph.
- //
- //
- // Tips:
- //
- // 1. I recommend using the same filter names as listed on GraphEdit.
- // 2. Make sure you don't have any typos when connecting the filters.
- // 3. Make sure to load the filters before connecting the pins.
- // 4. The order of connection can be important.
- // 5. Having GraphEdit open while trying create a graph will cause it to fail!
- // 6. Make sure that the Overlay Mixer filter is named "Overlay Mixer" or you'll
- // have issues with getting Transparent OSD to work.
- // 7. Same thing for the Video Renderer, make sure it's labeled as "Video Renderer".
- // 8. Make your life easier by using the Conversion program I wrote to convert
- // GraphEdit's exported XML files into a Zoom Player FilterGraph file. You can
- // get it here: http://www.inmatrix.com/files/xml2zoom_download.shtml
- //
- //
- // Sample "FilterID":
- //
- // {9BC1B780-85E3-11D2-98D0-0080C84E9C39} - Cyberlink Audio Decoder (PowerDVD)
- //
- // {9BC1B781-85E3-11D2-98D0-0080C84E9C39} - Cyberlink Video/SP Decoder (PowerDVD)
- //
- // {3D5455E5-D8E8-4B4C-84AF-4703C5542042} - Cyberlink Audio Effect
- //
- //
- // This example shows you how to use the Cyberlink 4.0 filters to render
- // a DVD graph. This setup should be the same as letting DirectShow render
- // the graph itself. I built this graph by first setting it up in Graph Edit
- // and then after making sure it works, I converted it to the example below.
- //
- // Here's an image of how this graph looks under GraphEdit:
- // http://www.inmatrix.com/pictures/misc/cyberlink_graph.gif
- //
-
- # Define our filter files:
- DefineFilter(clvsd.ax)
- DefineFilter(claud.ax)
-
- # Load all our filters into the Graph
- LoadFilter({70E102B0-5556-11CE-97C0-00AA0055595A},Video Renderer)
- LoadFilter({79376820-07D0-11CF-A24D-0020AFD79767},Default DirectSound Device)
- LoadFilter({CD8743A1-3736-11D0-9E69-00C04FD7C15B},Overlay Mixer)
- LoadFilter({9BC1B780-85E3-11D2-98D0-0080C84E9C39},Cyberlink Audio Decoder)
- LoadFilter({6E8D4A20-310C-11D0-B79A-00AA003767A7},Line21 Decoder)
- LoadFilter({9BC1B781-85E3-11D2-98D0-0080C84E9C39},Cyberlink Video/SP Decoder)
- LoadFilter({9B8C4620-2C1A-11D0-8493-00A02438AD48},DVD Navigator)
-
-
- # Connect the DVD Navigator Video-Out Pin to the Cyberlink Video decoder Video-In pin.
- ConnectPin(DVD Navigator,Video,Cyberlink Video/SP Decoder,Video In)
-
- # Connect the DVD Navigator AC3-Out pin (audio) to the Cyberlink Audio decoder Audio-in pin.
- ConnectPin(DVD Navigator,AC3,Cyberlink Audio Decoder,In)
-
- # Connect the DVD Navigator SubPicture-Out pin (subtitles) to the Cyberlink Video SubPicture-In pin.
- ConnectPin(DVD Navigator,SubPicture,Cyberlink Video/SP Decoder,SubPicture In)
-
- # Connect the Cyberlink Audio decoder Audio-Out pin to the Default DirectSound Device Audio Renderer
- ConnectPin(Cyberlink Audio Decoder,Out,Default DirectSound Device,Audio Input pin (rendered))
-
- # Connect the Cyberlink Video decoder to the Overlay Mixer
- ConnectPin(Cyberlink Video/SP Decoder,Video Out,Overlay Mixer,Input0)
-
- # Connect the Cyberlink Video decoder to the Line21 decoder (closed captions)
- ConnectPin(Cyberlink Video/SP Decoder,~Closed Caption Out,Line21 Decoder,In)
-
- # Connect the Line21 decoder to the Overlay Mixer
- ConnectPin(Line21 Decoder,Out,Overlay Mixer,Input2)
-
- # Connect the Overlay Mixer to the video renderer
- ConnectPin(Overlay Mixer,Output,Video Renderer,In)
-